【MySQL】バックアップの作成(mysqldump)

【MySQL】バックアップの作成(mysqldump)

MySQLのバックアップについて解説します。

検証環境

バックアップ

MySQLはバックアップによってデータベースの状態をファイルに保存することができます。

バックアップファイルはデータベースの復元ができるため、システムやアプリ等の障害時の備えとして重要です。

次のデータベースを元にバックアップについて確認していきましょう。

mysql> SELECT * FROM mydb.items;
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
|  3 | Pineapple |  1100 |     1 |
|  4 | Grapes    |  3500 |     1 |
+----+-----------+-------+-------+
4 rows in set (0.00 sec)

作成

バックアップファイルの作成はmysqldumpコマンドを使用します。

基本構文

$ mysqldump --single-transaction -u ユーザー -p データベース > ファイルパス

サンプル

___ih_hl_start
$ mysqldump --single-transaction -u root -p mydb > mydb.dump
___ih_hl_end
$ ls
mydb.dump

全データベースのバックアップを作成するにはデータベースを指定せずに-x --all-databasesオプションを記述します。

___ih_hl_start
$ mysqldump --single-transaction -u root -p -x --all-databases > mydb.dump
___ih_hl_end

復元

バックアップファイルからデータベースを復元するにはmysqlコマンドを使用します。

基本構文

$ mysql -u ユーザー -p データベース < ファイルパス

サンプル

動作を確認するため、itemsテーブルを削除しておきます。

mysql> USE mydb;
Database changed

mysql> DROP TABLE items;
Query OK, 0 rows affected (0.02 sec)

mysql> SHOW TABLES;
Empty set (0.00 sec)

バックアップファイルから復元します。

___ih_hl_start
$ mysql -u root -p mydb < mydb.dump
___ih_hl_end
Enter password:

データベースを確認するとデータが復元されています。

mysql> use mydb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| items          |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM items;
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
|  3 | Pineapple |  1100 |     1 |
|  4 | Grapes    |  3500 |     1 |
+----+-----------+-------+-------+
4 rows in set (0.00 sec)